import Vue from 'vue'
import App from './App'
// uniapp 没有打补丁的情况下, 默认使用的是 error-first 的规范, 是一种在 nodejs 中非常常见的异步任务规范
// 将异步任务的结果放到一个数组中返回, 数组的第一个元素是错误对象, 数组的第二个元素是响应结果, 以便程序员使用
import './uni.promisify.adaptor'
import uView from "uview-ui"
import store from './store'

Vue.use(uView)

Vue.config.productionTip = false

App.mpType = 'app'

uni.$u.http.setConfig((config) => {
  /* config 为默认全局配置*/
  config.baseURL = 'https://api-hmugo-web.itheima.net/api/public/v1';
  return config
})

// 设置请求拦截器
uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
  uni.showLoading();
  // 获取 token
  const token = store.state.user.token
  // console.log(token)
  // 判断请求地址 url 是否以 /my 开头, 如果是才携带 token
  if (token && config.url.startsWith('/my')) {
    config.header.Authorization = token
  }
  return config
}, config => { // 可使用async await 做异步操作
  return Promise.reject(config)
})

// 设置响应拦截器
uni.$u.http.interceptors.response.use((response) => {
  uni.hideLoading();
  return response.data // 数据脱壳
}, (response) => {
  return Promise.reject(response)
});

const app = new Vue({
  ...App,
  store
})
app.$mount()
